package com.oracle.mapper;

import com.oracle.dto.PbcgzGzdytbDTO;
import com.oracle.entity.PbcgzGzdytb;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 低电压治理明细填报表Mapper接口
 * 
 * @author System
 * @date 2025-09-05
 */
@Mapper
public interface PbcgzGzdytbMapper {

    /**
     * 插入数据
     * @param entity 实体对象
     * @return 插入结果
     */
    @InsertProvider(type = PbcgzGzdytbMapperProvider.class, method = "insert")
    int insert(PbcgzGzdytb entity);

    /**
     * 根据ID删除数据
     * @param id 主键ID
     * @return 删除结果
     */
    @DeleteProvider(type = PbcgzGzdytbMapperProvider.class, method = "deleteById")
    int deleteById(@Param("id") String id);

    /**
     * 批量删除数据
     * @param ids ID列表
     * @return 删除结果
     */
    @DeleteProvider(type = PbcgzGzdytbMapperProvider.class, method = "batchDelete")
    int batchDelete(@Param("ids") List<String> ids);

    /**
     * 更新数据
     * @param entity 实体对象
     * @return 更新结果
     */
    @UpdateProvider(type = PbcgzGzdytbMapperProvider.class, method = "update")
    int update(PbcgzGzdytb entity);

    /**
     * 批量更新状态
     * @param ids ID列表
     * @param status 状态
     * @param submitTime 提交时间
     * @return 更新结果
     */
    @UpdateProvider(type = PbcgzGzdytbMapperProvider.class, method = "batchUpdateStatus")
    int batchUpdateStatus(@Param("ids") List<String> ids, @Param("status") String status, @Param("submitTime") String submitTime);

    /**
     * 根据ID查询数据
     * @param id 主键ID
     * @return 实体对象
     */
    @SelectProvider(type = PbcgzGzdytbMapperProvider.class, method = "selectById")
    PbcgzGzdytb selectById(@Param("id") String id);

    /**
     * 统一查询接口
     * @param dto 查询条件DTO
     * @return 数据列表
     */
    @SelectProvider(type = PbcgzGzdytbMapperProvider.class, method = "selectList")
    List<PbcgzGzdytb> selectList(PbcgzGzdytbDTO dto);

    /**
     * 查询总数
     * @param dto 查询条件DTO
     * @return 总数
     */
    @SelectProvider(type = PbcgzGzdytbMapperProvider.class, method = "selectCount")
    Long selectCount(PbcgzGzdytbDTO dto);
}